package demo2;

public class Test {
    public static void func1(Animal animal) {
        animal.eat();
    }
    public static void testFly(IFly iFly) {//只要实现了该接口，就可以调用该方法
        iFly.fly();
    }
    public static void testRun(IRun iRun) {
        iRun.run();
    }
    public static void testSwim(ISwim iSwim) {
        iSwim.swim();
    }
    public static void main(String[] args) {
        //接口之间可以进行拓展，使用extends
    }
    public static void main4(String[] args) {
        testFly(new Duck("唐老鸭"));
        testRun(new Duck("唐老鸭"));
        testSwim(new Duck("唐老鸭"));
        //动物中，并不是所有东西都实现多个行为，所以需要使用接口，谁实现即可完成行为
        //类在java中不能进行多继承，所以需要使用接口
    }
    public static void main3(String[] args) {
        testRun(new Bird("布谷"));
        testRun(new Dog("小黑"));
        testRun(new Duck("唐老鸭"));
        testRun(new Roboot());
        //接口会忘记类型，实现即可调用
    }
    public static void main2(String[] args) {
        testFly(new Bird("布谷"));//实现即可调用方法，实现多态
        testFly(new Duck("唐老鸭"));
    }
    public static void main1(String[] args) {
        //使用多态
        func1(new Dog("小黑"));
        func1(new Bird("布谷"));
        func1(new Duck("唐老鸭"));
    }
}
